package com.xt.base.test;

import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.log4j.Logger;
import org.springframework.test.AbstractTransactionalDataSourceSpringContextTests;

/**
 * Base class for running Dao tests.
 * 
 * @author ��鲨
 */
public abstract class BaseDaoTestCaseMobile extends
		AbstractTransactionalDataSourceSpringContextTests {
	protected final Logger log = Logger.getLogger(getClass());

	protected ResourceBundle rb;

	protected String[] getConfigLocations() {
		setAutowireMode(AUTOWIRE_BY_NAME);		
		return new String[] { "classpath*:applicationContext-mobile.xml"
				 };
	}

	public BaseDaoTestCaseMobile() {
		// Ĭ��ΪRollback�����ϣ��Ĭ���ύ���Խ��ȡ���¾��ע��.
		// setDefaultRollback(false);
		
		
		// Since a ResourceBundle is not required for each class, just
		// do a simple check to see if one exists
		String className = this.getClass().getName();

		try {
			rb = ResourceBundle.getBundle(className);
		} catch (MissingResourceException mre) {
			// log.warn("No resource bundle found for: " + className);
		}
	}

	/**
	 * Utility method to populate a javabean-style object with values from a
	 * Properties file
	 * 
	 * @param obj
	 * @return Object populated object
	 * @throws Exception
	 */
	protected Object populate(Object obj) throws Exception {
		// loop through all the beans methods and set its properties from
		// its .properties file
		Map map = new HashMap();

		for (Enumeration keys = rb.getKeys(); keys.hasMoreElements();) {
			String key = (String) keys.nextElement();
			map.put(key, rb.getString(key));
		}

		BeanUtils.copyProperties(obj, map);

		return obj;
	}
}
